草庐IT

iOS UISlider 值不匹配

全部标签

Javascript 性能 : How come looping through an array and checking every value is faster than indexOf, 搜索和匹配?

这对我来说是一个巨大的惊喜,我想了解这个结果。我做了一个testinjsperf这基本上应该采用一个字符串(这是我想检查的URL的一部分)并检查是否存在4个项目(实际上存在于字符串中)。它以5种方式检查:简单的indexOf;分割字符串,然后是indexOf;正则表达式搜索;正则表达式匹配;拆分字符串,遍历项目数组,然后检查是否有任何项目匹配它应该匹配的东西令我大吃一惊的是,5号是Chrome21中最快的。这是我无法解释的。在Firefox14中,普通的indexOf是最快的,我相信这一点。 最佳答案 我也很惊讶,但Chrome使用

javascript - 如何使用 JavaScript/Prototype 1.7 递归搜索对象树并根据键/值返回匹配对象

我有一些嵌套的对象数据,我想搜索它并根据id返回匹配的对象。vardata=[{id:0,name:'Template0',subComponents:[{id:1,name:'Template1',subItems:[{id:2,name:'Template2',subComponents:[{id:3,name:'Template3'}],subItems:[{id:4,name:'Template4'}]}]}]}];所以我想做这样的事情getObjectByKeyValue({id:3})让它返回{id:3,name:'Template3'}因为我有子项目和子组件,每个子组件都

javascript - 仅匹配 unicode 字母

我有以下只允许字母的正则表达式:/[a-zA-Z]+/a="abcDF"if(a.match(/[a-zA-Z]+/)==a){//Match}else{//NoMatch}我如何使用p{L}(通用-任何语言,如德语、英语等。)我试过的:a.match(/[p{l}]+/)a.match(/[\p{l}]+/)a.match(/p{l}/)a.match(/\p{l}/)但对于字母a="aB"全部返回null 最佳答案 从ECMAScript2018开始,JavaScript终于支持了Unicodepropertyescapes天生

javascript - 有没有办法在 JavaScript 中对正则表达式使用非贪婪匹配?

我想知道是否有一种方法可以在JavaScript中使用非贪婪匹配?我尝试了U修饰符,但它似乎不起作用。我想用JavaScript编写一个小型BBCode解析器,但如果没有非贪婪匹配,就不可能(至少在我看来)做这样的事情:'[b]one[/b]two[b]three[/b]'.replace(/\[b\](.*)\[\/b\]/,'$1');但是这样的替换会很好,因为那时不需要检查HTML有效性。未闭合的标记将保持简单文本。 最佳答案 您可以在*或+之后使用?使其变得不贪婪,例如(.*?)

javascript - 使用 $0 来引用 Javascript 的 String.replace 中的整个匹配项

我在一组文本中突出显示搜索字符串的实例。我想在替换查询的不区分大小写的匹配项时保留原始文本的大小写。这是我的开头:text.replace(newRegExp('('+query+')','ig'),'$1');在这种情况下,我需要转义query以防止括号破坏子匹配,所以我想我会尝试:text.replace(newRegExp(query,'ig'),'$0');但是$0似乎没有被使用——所有匹配的字符串都被替换为$0。但是,我确实找到了替代方案:text.replace(newRegExp(query,'ig'),function(match){return''+match+'';

javascript - 当我期望一个匹配时,match() 返回包含两个匹配的数组

考虑以下示例:varstr="filename.jpg";varpattOne=newRegExp('\.[^\.]*$');varpattTwo=newRegExp('(\.[^\.]*$)');varpattThree=newRegExp('(\.[^\.]*$)','g');document.write(str.match(pattOne));document.write('');document.write(str.match(pattTwo));document.write('');document.write(str.match(pattThree));结果如下:.jpg.

javascript - 有没有办法删除所有具有匹配特定模式的键的 sessionStorage 项目?

假设我的sessionStorage包含三个对象,它们的键是foo、foobar和baz。有没有一种方法可以调用.removeItem或以某种方式删除sessionStorage中的所有项谁的键匹配foo?在这个例子中,我将只剩下键为baz的项目。 最佳答案 2014年9月20日更新正如JordanTrudgett所指出的,反向循环更合适您只能通过编程方式实现它,因为sessionStorage公开了一组有限的方法:getItem(key)、setItem(key,value),removeItem(key),key(positio

Javascript:将具有匹配项的函数传递给替换(regex,func(arg))不起作用

根据该站点,以下替换方法应该有效,但我持怀疑态度。http://www.bennadel.com/blog/55-Using-Methods-in-Javascript-Replace-Method.htm我的代码如下:text=text.replace(newRegex(...),match($1)//$..anymatchargumentpassedtotheuserfunction'match',//whichitselfinvokesauserfunction);我使用的是Chrome14,没有传递给函数match的任何参数?更新:使用时有效text.replace(/.../

javascript - 如何在 JavaScript 正则表达式匹配中查找组索引?

这个问题在这里已经有了答案:GetindexofeachcaptureinaJavaScriptregex(7个答案)关闭去年。当我写一个正则表达式时:varm=/(s+).*?(l)[^l]*?(o+)/.exec("thisishellotoyou");console.log(m);我得到一个包含以下内容的匹配对象:{0:"sishello",1:"s",2:"l",3:"o",index:3,input:"thisishellotoyou"}我从index属性中知道整个匹配的索引,但我还需要知道匹配组的开始和结束。使用简单的搜索是行不通的。在此示例中,它将查找第一个“l”而不是在

javascript - 数组中用于匹配表达式的字符串之一

问题:我有一个promise数组,它被解析为一个字符串数组。现在,如果至少有一个字符串与正则表达式匹配,则测试应该通过。目前,我使用简单的字符串连接来解决它:protractor.promise.all([text1,text2,text3]).then(function(values){expect(values[0]+values[1]+values[2]).toMatch(/expression/);});显然,这扩展性不佳并且可读性不是特别好。问题:可以使用自定义jasmine匹配器或jasmine.any()来解决它或customasymmetricequalityteste